home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #142 (1991-10)(Rhein-Sieg-Soft).zip / Franz PD Disk #142 (1991-10)(Rhein-Sieg-Soft).adf / CLI-Befehle2 / Source / MakeDir.asm < prev    next >
Assembly Source File  |  1991-09-30  |  4KB  |  88 lines

  1. **********************************
  2. *         MakeDir V1.1           *
  3. *  Written in 1991 by N.Tausch   *
  4. *         Public Domain          *
  5. **********************************
  6.  
  7. ExecBase:       equ 4
  8. OldOpenLibrary: equ -408
  9. CloseLibrary:   equ -414
  10. Output:         equ -60
  11. Write:          equ -48
  12. CreateDir:      equ -120
  13. UnLock:         equ -90
  14.  
  15.          movem.l a0/d0,-(sp)      ; Parameter sichern
  16.          move.l ExecBase,a6       ; dos.library öffnen
  17.          lea.l DosName,a1
  18.          jsr OldOpenLibrary(a6)
  19.          tst.l d0                 ; war Operation erfolgreich?
  20.          beq.s LibraryError       ; Nein? Programmende
  21.          move.l d0,DosBase        ; DosBase sichern
  22.          move.l DosBase,a6        ; und gleich nach a6 damit
  23.          jsr Output(a6)           ; Outputhandle holen
  24.          move.l d0,OutputHandle   ; und sichern
  25.          movem.l (sp)+,a0/d0      ; Parameter vom Stack
  26.          subi.b #1,d0
  27.          tst.l d0                 ; und testen ob überhaupt ein Parameter vorhanden ist
  28.          beq.w NoParameter        ; Falls nein, dann Fehlertext schreiben
  29.          addi.b #1,d0
  30.          move.b #' ',-1(a0,d0.l)  ; Parameter auf Behandlung vor-
  31.          lea Parameter,a1         ; bereiten
  32.          jsr Param                ; Und Parameter bearbeiten
  33.          move.l #Parameter,d1     ; Gleich nach d1 damit
  34.          jsr CreateDir(a6)        ; Und neues Verzeichnis erstellen
  35.          tst.l d0                 ; Ist die Operation geglückt?
  36.          beq.s Error              ; Nein? dann verzweige zu Fehler
  37.          move.l d0,d1             ; Lock des Verzeichnisses nach d1
  38.          jsr UnLock(a6)           ; Und Lock wieder freigeben
  39.          move.l OutputHandle,d1   ; Outputhandle nach d1
  40.          move.l #Createtext,d2    ; Text nach d2
  41.          move.l #Endtext-Createtext,d3 ; textlänge nach d3
  42.          jsr Write(a6)            ; und schreiben
  43.          move.l DosBase,a1        ; dos.library wieder schließen
  44.          move.l ExecBase,a6
  45.          jsr CloseLibrary(a6)
  46.  
  47. LibraryError:
  48.          clr.l d0
  49.          rts                      ; Programm beenden
  50. Error:
  51.          move.l OutputHandle,d1   ; OutputHandle nach d1
  52.          move.l #Endtext,d2       ; Fehlertext nach d2
  53.          move.l #End2text-Endtext,d3 ; Fehlertextlänge nach d3
  54.          jsr Write(a6)            ; Text schreiben
  55.          rts                      ; Programm beenden
  56. NoParameter:
  57.          move.l OutputHandle,d1    ; Outputhandle nach d1
  58.          move.l #Parametertext,d2  ; Text nach d2
  59.          move.l #Createtext-Parametertext,d3 ; Textlänge nach d3
  60.          jsr Write(a6)             ; und Text schreiben
  61.          jmp LibraryError          ; programm beenden
  62.  
  63. Param    cmp.b #' ',(a0)+          ; Ignoriere alle Leerzeichen
  64.          beq.s Param               ; vor Begin des Parameters
  65.          subq.l #1,a0              ; Wieder eins von a0 abziehen
  66. PWait    move.b (a0)+,(a1)+        ; Parameter übertragen
  67.          cmp.b #' ',(a0)           ; bis ein Leerezeichen kommt
  68.          bne.s PWait
  69.          clr.b (a1)                ; Terminiere Parameter mit 0-Byte
  70.          rts                       ; Zurück
  71.  
  72. ; *************** Daten *****************
  73.  
  74. DosName: dc.b "dos.library",0
  75. DosBase: dc.l 0
  76. Parameter: ds.b 60
  77. Length: dc.l 0
  78. OutputHandle: dc.l 0
  79. Parametertext:
  80.                 dc.b "Benutze folgendes Format: <MakeDir Name>",10
  81. Createtext:
  82.                 dc.b "Ich erstelle ein neues Directory",10
  83. Endtext:
  84.                 dc.b "Ich kann kein neues Verzeichnis erstellen !",10
  85. End2text:
  86.           end
  87.  
  88.